import os

from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtSql import QSqlQuery

import FznChatMessage


class FznChatMessageTable:
    """
    用户的消息列表。因为使用了用户的ID，所以没有集成到下面的FznChatDataBase对象中。

    Attributes:
        user_id: 用户ID
        table_name: 存储消息的表名称，每个用户都有一个不同的名称。
    """

    def __init__(self, user_id: int):
        """
        创建存放聊天记录的数据库表和索引。
        :param user_id:
        """
        self.user_id = user_id
        self.table_name = "message_history_{}".format(self.user_id)

        # 创建消息数据表main
        sql_code = "create table if not exists {}(id text primary key , user_id integer, dst_id integer, group_id integer, cmd integer, media integer, content text, pic text, url text, memo text, amount integer, created text, send_flag text default 'N', have_read text default 'N')".format(
            self.table_name)
        query = QSqlQuery()
        query.exec_(sql_code)

        # 创建群数据表，存放用户所在的群
        self.group_table_name = "group_{}".format(self.user_id)
        sql_code = "create table if not exists {}(id integer primary key , name text, icon text, cate integer, memo text, owner integer)".format(
            self.group_table_name)
        query.exec_(sql_code)

        # 创建存放群中用户的数据表
        self.contact_table_name = "contact_{}".format(self.user_id)
        sql_code = "create table if not exists {}( owner integer, dst integer)".format(self.contact_table_name)
        query.exec_(sql_code)


class FznChatNotDisturbTable:
    """
    免打扰表，每个用户都不一样，和下面记录历史消息的表逻辑是一样的。
    """

    def __init__(self, user_id: int):
        """
        创建存放免打扰用户或群ID的数据库表。
        :param user_id:
        """
        self.user_id = user_id
        self.table_name = "not_disturb_{}".format(self.user_id)

        query = QSqlQuery()
        sql_code = "create table if not exists {}(id text primary key , dst_id integer)".format(self.table_name)
        query.exec_(sql_code)

